Mysql中的日志

#

1. 物理结构

  • MySQL是通过文件系统对数据和索引进行存储的。
  • MySQL从物理结构上可以分为日志文件和数据索引文件。

  • MySQL在Linux中的数据索引文件和日志文件都在/var/lib/mysql目录下。

  • 日志文件采用顺序IO方式存储、数据文件采用随机IO方式存储。

2. 日志文件

  • 错误日志文件

    默认是开启的,而且从5.5.7以后无法关闭错误日志,错误日志记录了运行过程中遇到的所有严重的错误 信息,以及 MySQL每次启动和关闭的详细信息。位置: /var/log/mysqld.log

  • 二进制日志(bin log)

    记录数据变化,binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息。如果是DDL语句,则直接记录到binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中生产中开启

    主要:用于数据备份,恢复,主从复制

    如果开启呢?

    /etc/my.cnf文件中的[mysqld] section中,进行如下配置

    1
    2
    # bin-log
    log-bin=mysql-bin

    注意: 打开之后,每重启一次mysql服务器,都会创建的一个新的mysql-bin文件

  • 通用查询日志

    什么都记录, 耗性能,生产中不开启

  • 慢查询日志

    SQL调优 定位慢的select

    默认是关闭,需要通过以下方式来进行开启:

    1
    2
    3
    4
    5
    6
    #开启慢查询日志
    slow_query_log=ON
    #慢查询的阈值
    long_query_time=3
    #日志记录文件如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
    slow_query_log_file=file_name

    记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句

  • 重做日志(redo log)

  • 回滚日志 (undo log)

  • 中继日志 (relay log)

查看日志开启情况,使用如下命令:

1
show variables like 'log_%'

查看数据文件的位置:

1
show variables like '%datadir%'

# MySql
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×